package com.qike.duola.service;

import com.qike.duola.domain.DuolaPlan;
import com.qike.duola.dto.*;
import com.qike.duola.vo.*;

import java.util.List;

public interface DuolaPlanService {
    /**
     * 添加生产计划
     * @param planAddDto
     */
    void planAdd(PlanAddDto planAddDto) throws Exception;

    /**
     * 生产计划列表
     * @param projectName
     * @param orderStatus
     * @return
     */
    List<PlanListVo> planList(String projectName, Long time, Integer orderStatus);

    /**
     * 生产计划详情/编辑跳转
     * @param id
     * @return
     */
    PlanEditJumpVo planEditJump(Integer id) throws Exception;

    /**
     * 生产计划编辑
     * @param planEditDto
     */
    void planEdit(PlanEditDto planEditDto) throws Exception;


    /**
     * 生产计划完成
     * @param planFinishDto
     */
    void planFinish(PlanFinishDto planFinishDto) throws Exception;

    /**
     * 获取所有车辆列表
     * @param planId
     * @return
     */
    List<GetCarListVo> getCarList(Integer planId);

    /**
     * 生产计划列表
     * @param planManageListDto
     * @return
     */
    PlanManageListVo planManageList(PlanManageListDto planManageListDto);

    /**
     * 生产计划开始发货
     * @param id
     */
    void planSend(Integer id) throws Exception;

    /**
     * 根据客户id选出已绑定合同的工程
     * @param customerId
     * @return
     */
    List<SelectProjectByCustomerIdVo> selectProjectByCustomerId(Integer customerId);

    /**
     * 删除生产计划
     * @param id
     */
    void delPlan(Integer id) throws Exception;

    /**
     * 查询超过30分钟还未发货的计划
     * @return
     */
    List<DuolaPlan> findLimit();
}
